package stream.demo01;

import java.util.*;
import java.util.stream.Stream;

public class StreamDemo02 {

    public static void main(String[] args) {

        //针对Collection体系的集合直接调用Collection接口中所提供的方法stream方法进行流的获取
        //用多态的方式创建Collection集合
        Collection<String> col = new ArrayList<>();

        //给集合内添加对象
        col.add("hello");
        col.add("world");
        col.add("java");
        col.add("itheima");

        //创建Stream流
        //  .filter()过滤中间操作
        //一个流后面可以跟随零个或多个中间操作，其目的主要是打开流，做出某种程度的数据过滤/映射，
        // 然后返回一个新的流，交给下一个操作使用
        // .forEach()
        //一个流只能有一个终结操作，当这个操作执行后，流就被使用“光”了，无法再被操作。所以这必定是流的最后一个操作

        col.stream().filter(s -> s.length() == 4).forEach(s -> System.out.println(s));

        System.out.println("--------------------------------");

        //Map流
        Map<String, String> map = new HashMap<>();

        //添加对象
        map.put("王尼玛", "张全蛋");
        map.put("易小星", "王大锤");
        map.put("罗永浩", "朱萧木");

        //生成流
        // 针对Map集合不能直接获取流对象，可以间接的获取流对象
        //获取Map中键的Set集合
        Set<String> keySet = map.keySet();

        keySet.stream().filter(s -> s.endsWith("浩")).forEach(s -> System.out.println(s + "---" + map.get(s)));

        System.out.println("-----------------------------=");
        //对于数组，可以使用Stream这个类中的静态of方法获取流对象
        // public static<T> Stream<T> of(T... values) {
        // return Arrays.stream(values);
        int[]arr= {22,34,21,34};
        Arrays.stream(arr).forEach(s-> System.out.println(s));
        System.out.println("-----------------");
        Stream.of(12 , 34 , 56).forEach( s ->
                System.out.println(s));


    }
}
